#include"comm.h"

#define SIZE 4096

int main()
{
    int shmid=createShm(SIZE);
    char* addr=(char*)shmat(shmid,nullptr,0);
    int i=0;
    while(i++<=25)
    {
        cout<<"client say:"<<addr<<endl;
        sleep(1);
    }
    shmdt(addr);
    destroyShm(shmid);
    return 0;
}
// int main()
// {
//     //这个建立共享内存并且进行连接到过程
//     key_t key=ftok(PATHNAME,PROJ_ID);
//     if(key < 0)
//     {
//         perror("ftok()");
//         exit(-1);
//     }
//     int shmid=shmget(key,SIZE,IPC_CREAT | IPC_EXCL |0666);
//     if(shmid < 0)
//     {
//         perror("shmget");
//         exit(-2);
//     }
//     char* addr=(char*)shmat(shmid,nullptr,0);
//     int i=0;
//     while(i++<=25)
//     {
//         cout<<"client#"<<addr<<endl;
//         sleep(1);
//     }
//     shmdt(addr);
//     destroyShm(shmid);
//     return 0;
// }
// int main()
// {
//     int shmid=createShm(SIZE);

//     char* addr=(char*)shmat(shmid,nullptr,0);
//     int i=0;
//     while(i++<=25)
//     {
//         cout<<"client#"<<addr<<endl;
//         sleep(1);
//     }
//     //最后解除关联并且删除共享内存
//     shmdt(addr);
//     sleep(2);
//     destroyShm(shmid);
//     return 0;
// }
// int main()
// {
//     int shmid=createShm(SIZE);
//     char* addr=(char*)shmat(shmid,nullptr,0);
//     sleep(2);
//     int i=0;
//     while(i++<=25)
//     {
//         cout<<"client#"<<addr<<endl;
//         sleep(1);
//     }
//     //找到共享内存的地址把共享内存和相关进程解关联
//     shmdt(addr);
//     //最后再删除共享内存
//     destroyShm(shmid);
//     return 0;
// }
// int main()
// {
//     int shmid=createShm(SIZE);

//     char* addr=(char*)shmat(shmid,nullptr,0);
//     sleep(2);
//     int i=0;
//     while(i++<=25)
//     {
//         //找到共享内存地址的首地址就可以将内容打印出来
//         cout<<"client#"<<addr<<endl;
//         sleep(2);
//     }   
//     shmdt(addr);
//     sleep(2);
//     destroyShm(shmid);
//     return 0;
// }
// int main()
// {
//     int shmid=createShm(4096);
    
//     //指定共享内存的地址空间由操作系统自行分配
//     char* addr=(char*)shmat(shmid,nullptr,0);
//     sleep(2);
//     int i=0;
//     //这里发送完客户端的数据以后就可以终止进程了
//     while(i++<=25)
//     {
//         cout<<"client#:"<<addr<<endl;
//         sleep(1);
//     }
//     shmdt(addr);
//     sleep(2);
//     destroyShm(shmid);
//     return 0;
// }
//服务端需要接受客户端写来的数据
// int main()
// {
//     int shmid=createShm(4096);

//     char* addr=(char*)shmat(shmid,nullptr,0);
//     sleep(2);
//     int i=0;
//     while(i++<=25)
//     {
//         cout<<"client#:"<<addr<<endl;
//         sleep(1);
//     }
//     shmdt(addr);
//     sleep(2);
//     destroyShm(shmid);
//     return 0;
// }
// int main()
// {
//     //获取shmget函数返回的内存标识
//     int shmid=createShm(4096);
//     //找到共享内存以后进行输出数据
//     char* addr=(char*)shmat(shmid,nullptr,0);
//     sleep(2);
//     int count=20;

//     while(--count)
//     {
//         cout<<"client:"<<addr<<endl;
//         sleep(1);
//     }
//     shmdt(addr);
//     sleep(2);
//     destroyShm(shmid);
//     return 0;
// }